public OnRconCommand(cmd[])
{
	#define CMD_TOKEN(%1) mystrtok(%1, cmd, idx)
	new tmp[32], tmpcmd[96], playerid;
	new idx;
	if(isnull(cmd) || cmd[0] <= ' ') return 0;
	CMD_TOKEN(tmp /*[32]*/);
	//printf("%s/%s", cmd, tmp);
	if(strcmd(tmp, "gcmd"))
	{
		new res;
		CMD_TOKEN(tmp /*[32]*/);
		if(isnull(tmp)) return SendPlayerUsageMsg(-1, "gcmd", "[playerid] [/cmd]");
			//print(CMD_USAGE_MSG##" gcmd [playerid] [/cmd]"),true;
		playerid = tmp[0] == '-' ? strval(tmp) : strid(tmp);
		mystrend(tmpcmd, cmd, idx);
		if(isnull(tmpcmd)) return SendPlayerUsageMsg(-1, "gcmd", "[playerid] [/cmd]");
		res = mysendplayercmd(playerid, tmpcmd);
		if(res) printf("Success(%d): %d# %s", res, playerid, tmpcmd);
		else print("Unknown command.");
		return true;
	}
	else if(strcmd(tmp,"gchat"))
	{
		CMD_TOKEN(tmp /*[32]*/);
		if(isnull(tmp)) return SendPlayerUsageMsg(-1, "gchat", "[playerid] [msg]");
		playerid = strid(tmp);
		if(!IsPlayerConnected(playerid)&&playerid!=(-1)) return print(CMD_INVALID_PLID),true;
		mystrend(tmpcmd, cmd, idx);
		//if(isnull(tmpcmd)) return SendPlayerUsageMsg(-1, "gchat", "[playerid] [msg]");
		if(OnPlayerText(playerid, tmpcmd))
			SendPlayerMessageToAll(playerid, tmpcmd);
		else
			printf("Refused: %d# %s", playerid, tmpcmd);
		return true;
	}
	else if(strcmd(tmp, "a"))
	{
		//new txt[128], aname[32];
		CMD_TOKEN(tmp /*[32]*/);
		if(isnull(tmp)) return SendPlayerUsageMsg(-1, "a", "[name] [msg]");
		mystrend(tmpcmd, cmd, idx);
		//OnPlayerText(-1, tmpcmd);
		if(!ParseText(tmpcmd)) return !printf("Refused: %s", tmpcmd);
		format(tmpcmd, sizeof(tmpcmd), "%s: %s", tmp, tmpcmd);
		SendClientMessageToAll(0xFFFFFFFF, tmpcmd);
		print(tmpcmd);
		return true;
	}
	else if(strcmd(tmp, "restart"))
	{
		if(!gActivePlayers)
		{
			print("No players on the server");
			SendRconCommand("exit");
		}
		g_restart = !g_restart;
		printf("g_restart = %s", boolalpha(g_restart));
		return true;
	}
	else if(strcmd(tmp, "reconfig"))
	{
		print("Deleting objects...");
		uninit_objects();
		print("Creating objects...");
		init_objects();
		return true;
	}
	else if(strcmd(tmp, "loadipl"))
	{
		new vloaded;
		mystrend(tmpcmd, cmd, idx);
		if(isnull(tmpcmd)) return SendPlayerUsageMsg(-1, tmp, "[filename]");
		vloaded = Load_IPL(tmpcmd);
		if(!vloaded) print("Error!");
		return true;
	}
	else if(strcmd(tmp, "loadveh"))
	{
		new vloaded;
		mystrend(tmpcmd, cmd, idx);
		if(isnull(tmpcmd)) return SendPlayerUsageMsg(-1, tmp, "[filename]");
		vloaded = Load_RAW(tmpcmd);
		if(!vloaded) print("Error!");
		return true;
	}
	else if(strcmd(tmp, "loadmta"))
	{
		new vloaded;
		mystrend(tmpcmd, cmd, idx);
		if(isnull(tmpcmd)) return SendPlayerUsageMsg(-1, tmp, "[filename]");
		vloaded = Load_MTA(tmpcmd);
		if(!vloaded) print("Error!");
		return true;
	}
	#if defined myhooks_dll_inc
	else if(strcmd(tmp, "connect"))
	{
		new ver = GetServerVersion(),
			syst = mygetsyst();
		new addr, obj;

		new id,
			name[MAX_PLAYER_NAME],
			serial[40] = "aaaaaaaaaaaaaaaaaaaaaaaa",
			type;
		CMD_TOKEN(tmpcmd);
		if(isnull(tmpcmd))
			return SendPlayerUsageMsg(-1, tmp, "[id] [name] [serial] [type]");
		id = strval(tmpcmd);
		if(IsPlayerConnected(id))
		{
			print("Already connected!");
			return true;
		}
		CMD_TOKEN(name);
		if(isnull(name))
			return SendPlayerUsageMsg(-1, tmp, "[id] [name] [serial] [type]");
		CMD_TOKEN(serial);
		CMD_TOKEN(tmpcmd);
		if(!isnull(tmpcmd))
			type = strval(tmpcmd);
		else
			type = 0;

		if(ver == SERVER_VERSION_03BR2)
		{
			if(syst == SYSTEM_TYPE_WIN32)
			{
				addr = 0x047C680;
				obj = mypeek(mypeek(0x04EFE08) + 0x4);
				//myhook_call_issi(addr, /*obj,*/ id, name, serial, type);
			}
			else // linux
			{
				addr = 0x809C5D0;
				obj = mypeek(mypeek(0x817CA98) + 0x4);
				//myhook_call_iissi(addr, obj, id, name, serial, type);
				/*  doesnt work? *
				if(
					mypeek(0x080CC73A+1) != (-1) ||
					mypeek(0x080CC6C4+1) != (-1) ||
					false)
						print("HOOKING ERROR PING");
				mypoke(0x080CC73A+1, 15); // default ping for the bots
				mypoke(0x08076B98+1, 17); // default ping for the bots
				mypoke(0x080CC6C4+1, 30); // default uip for the bots
				/ */
			}
		}
		else if(ver == SERVER_VERSION_03CR0)
		{
			if(syst == SYSTEM_TYPE_WIN32)
			{
				addr = 0x047C750;
				obj = mypeek(mypeek(0x04F5268) + 0x4);
			}
			else // linux
			{
				addr = 0x809CC10;
				obj = mypeek(mypeek(0x8182EB8) + 0x4);
			}
		}
		else
			return print("bad version!");
		new tmaxplid = maxplid;
		myhook_call_iissi(addr, obj, id, name, serial, type);
		maxplid = tmaxplid;
		return true;
	}
	else if(strcmd(tmp, "disconnect"))
	{
		new ver = GetServerVersion(),
			sys = mygetsyst();
		new addr, obj;

		new id,
			type;
		CMD_TOKEN(tmpcmd);
		if(isnull(tmpcmd))
			return SendPlayerUsageMsg(-1, tmp, "[id] [reason]");
		id = strval(tmpcmd);

		CMD_TOKEN(tmpcmd);
		if(!isnull(tmpcmd))
			type = strval(tmpcmd);
		else
			type = 1;

		if(ver == SERVER_VERSION_03BR2)
		{
			if(sys == SYSTEM_TYPE_WIN32)
			{
				addr = 0x47C970;
				obj = mypeek(mypeek(0x4EFE08) + 0x4);
			}
			else // linux
			{
				addr = 0x809C950;
				obj = mypeek(mypeek(0x817CA98) + 0x4);
			}
		}
		else if(ver == SERVER_VERSION_03CR0)
		{
			if(sys == SYSTEM_TYPE_WIN32)
			{
				addr = 0x47C970;
				obj = mypeek(mypeek(0x04F5268) + 0x4);
			}
			else // linux
			{
				addr = 0x809CFA0;
				obj = mypeek(mypeek(0x8182EB8) + 0x4);
			}
		}
		else
			return print("bad version!");
		myhook_call_iii(addr, obj, id, type);
		return true;
	}

	else if(strcmd(tmp, "spawn"))
	{
		new ver = GetServerVersion(),
			sys = mygetsyst();
		new addr, obj;

		new id;
		CMD_TOKEN(tmpcmd);
		if(isnull(tmpcmd))
			return SendPlayerUsageMsg(-1, tmp, "[id]");
		id = strval(tmpcmd);

		if(ver == SERVER_VERSION_03BR2)
		{
			if(sys == SYSTEM_TYPE_WIN32)
			{
				addr = 0x481080;
				obj = mypeek(mypeek(mypeek(0x4EFE08) + 0x4) + id * 4 + 0x7D0);
			}
			else // linux
			{
				addr = 0x809B200;
				obj = mypeek(mypeek(mypeek(0x817CA98) + 0x4) + id * 4 + 0x7D0);
			}
		}
		else if(ver == SERVER_VERSION_03CR0)
		{
			if(sys == SYSTEM_TYPE_WIN32)
			{
				addr = 0x494390;
				obj = mypeek(mypeek(mypeek(0x04F5268) + 0x4) + id * 4 + 0x7D0);
			}
			else // linux
			{
				addr = 0x809B6A0;
				obj = mypeek(mypeek(mypeek(0x8182EB8) + 0x4) + id * 4 + 0x7D0);
			}
		}
		else
			return print("bad version!");
		//mypoke(obj + 0x01B5, PLAYER_STATE_ONFOOT);
		SetPlayerState(obj, PLAYER_STATE_ONFOOT);

		mypoke(obj + 0x0C, 100.0);
		myhook_call_i(addr, obj);
		return true;
	}
	else if(strcmd(tmp, "put"))
	{
		new ver = GetServerVersion(),
			sys = mygetsyst();
		new obj;

		new id, vehicleid, seat;

		CMD_TOKEN(tmpcmd);
		if(isnull(tmpcmd))
			return SendPlayerUsageMsg(-1, tmp, "[id] [vehicleid] [seat]");
		id = strval(tmpcmd);
		CMD_TOKEN(tmpcmd);
		if(isnull(tmpcmd))
			return SendPlayerUsageMsg(-1, tmp, "[id] [vehicleid] [seat]");
		vehicleid = strval(tmpcmd);
		CMD_TOKEN(tmpcmd);
		if(isnull(tmpcmd))
			return SendPlayerUsageMsg(-1, tmp, "[id] [vehicleid] [seat]");
		seat = strval(tmpcmd);

		if(ver == SERVER_VERSION_03BR2)
		{
			if(sys == SYSTEM_TYPE_WIN32)
			{
				obj = mypeek(mypeek(mypeek(0x4EFE08) + 0x4) + id * 4 + 0x7D0);
			}
			else // linux
			{
				obj = mypeek(mypeek(mypeek(0x817CA98) + 0x4) + id * 4 + 0x7D0);
			}
		}
		else if(ver == SERVER_VERSION_03CR0)
		{
			if(sys == SYSTEM_TYPE_WIN32)
			{
				obj = mypeek(mypeek(mypeek(0x04F5268) + 0x4) + id * 4 + 0x7D0);
			}
			else // linux
			{
				obj = mypeek(mypeek(mypeek(0x8182EB8) + 0x4) + id * 4 + 0x7D0);
			}
		}
		else
			return print("bad version!");

		SetPlayerState(obj, seat?PLAYER_STATE_PASSENGER:PLAYER_STATE_DRIVER);
		mypoke(obj + 0x19BA, vehicleid);
		mypoke(obj + 0x19B9, seat);
		return true;
	}
	else if(strcmd(tmp, "health"))
	{
		new ver = GetServerVersion(),
			sys = mygetsyst();
		new addr, obj;

		new id;
		CMD_TOKEN(tmpcmd);
		if(isnull(tmpcmd))
			return SendPlayerUsageMsg(-1, tmp, "[id] ([health])");
		id = strval(tmpcmd);

		if(ver == SERVER_VERSION_03BR2)
		{
			if(sys == SYSTEM_TYPE_WIN32)
			{
				obj = mypeek(mypeek(mypeek(0x4EFE08) + 0x4) + id * 4 + 0x7D0);
			}
			else // linux
			{
				obj = mypeek(mypeek(mypeek(0x817CA98) + 0x4) + 0x07D0 + id * 4);
			}
		}
		else if(ver == SERVER_VERSION_03CR0)
		{
			if(sys == SYSTEM_TYPE_WIN32)
			{
				obj = mypeek(mypeek(mypeek(0x04F5268) + 0x4) + id * 4 + 0x7D0);
			}
			else // linux
			{
				obj = mypeek(mypeek(mypeek(0x8182EB8) + 0x4) + 0x07D0 + id * 4);
			}
		}
		else
			return print("bad version!");
		addr = obj + 0x0C;
		printf("Current health: %.0f, armour: %.0f", mypeek(addr), mypeek(addr + cellbits/8));
		CMD_TOKEN(tmpcmd);
		if(!isnull(tmpcmd))
			mypoke(addr, floatstr(tmpcmd));
		return true;
	}

	#endif
	else if(strcmd(tmp, "recount"))
	{
		new i;
		for(i = 0, maxplid = 0, gActivePlayers = 0; i < NUM_PLAYERS; i++)
		{
			if(IsPlayerConnected(i))
			{
				++gActivePlayers;
				if(i > maxplid) maxplid = i;
			}
		}
		return true;
	}
	#if defined SILENT_JOIN
	else if(strcmd(tmp, "silent"))
	{
		nextsilent = !nextsilent;
		printf("silent = %s", boolalpha(nextsilent));

		return true;
	}
	#endif
	#if defined AFK_SHOW
	else if(strcmd(tmp, "afklist"))
	{
		for(new i=0; i <= maxplid; i++) if(pstate[i])
			printf("%s(%d): %d", GetFormattedName(i), i, GetPlayerAFKTime(i)/TICKS_PER_SEC);
		return true;
	}
	#endif
	#if defined _GeoIP_Plugin_included || defined mygeoip_inc

	#if defined _GeoIP_Plugin_included
	 #define GetCountry GetCountryName
	#elseif defined mygeoip_inc
	 #define GetCountry mygeoip_country
	#endif
	else if(strcmd(tmp, "countries"))
	{
		/*#if defined _GeoIP_Plugin_included
		for(new i=0; i<NUM_PLAYERS; i++) if(IsPlayerConnected(i))
			printf("%s(%d)		%s", GetFormattedName(i), i, GetPlayerCountryName(i));
		#elseif defined mygeoip_inc*/
		new ip[16];
		for(new i = 0; i <= maxplid; i++) if(IsPlayerConnected(i))
		{
			GetPlayerIp(i, ip, sizeof(ip));
			if(GetCountry(ip, tmpcmd, sizeof(tmpcmd)))
				printf("%s (%d:%s): %s", GetPName(i), i, ip, tmpcmd);
			else
				printf("Couldn\'t resolve country for %s", ip);
		}
		//#endif
		return true;
	}
	else if(strcmd(tmp, "geoip"))
	{
		new ip[16];
		CMD_TOKEN(ip);
		#if defined mygeoip_inc
		if(isnull(ip))
			return SendPlayerUsageMsg(-1, tmp, "[ip]|\"load\"|\"unload\" (\"city\")");
		if(strcmd(ip, "load") || strcmd(ip, "unload"))
		{
			new bool:load = strcmd(ip, "load")?true:false,
				bool:city;
			CMD_TOKEN(tmpcmd);
			city = (!isnull(tmpcmd) && strcmd(tmpcmd, "city"))?true:false;
			printf("%s%s%s", ip, city?(" city "):(" "),
				(load?(city?
					mygeoip_city_load("scriptfiles/" ## GEOIP_PATH_PREFIX ## GEOIP_CITY_PATH):
					mygeoip_load("scriptfiles/" ## GEOIP_PATH_PREFIX ## GEOIP_PATH)):
				(city?mygeoip_city_unload():mygeoip_unload()))?("success"):("failed"));
			return true;
		}
		#else
		if(isnull(ip))
			return SendPlayerUsageMsg(-1, tmp, "[ip]");
		#endif
		if(GetCountry(ip, tmpcmd, sizeof(tmpcmd)))
		{
			printf("%s: %s", ip, tmpcmd);
			#if defined mygeoip_inc
			if(mygeoip_city_isloaded() && mygeoip_city_name(ip, tmpcmd, sizeof(tmpcmd)))
			{
				printf("%s: %s", ip, tmpcmd);
			}
			#endif
		}
		else
			printf("Couldn\'t resolve country for %s", ip);
		return true;
	}
	#undef GetCountry
	#endif
	else if(strcmd(tmp, "kernel_stat"))
	{
		#if G_DEBUG == true
		print("g_debug is enabled");
		#endif
		printf("tick count: %d ticks", GetTickCount());
		printf("free heap space: %d bytes", heapspace());
		printf("g_restart == %s", boolalpha(g_restart));
		printf("gActivePlayers %d, maxplid %d", gActivePlayers, maxplid);
		#if defined mystreamer_inc
		printf("objects totally loaded: %d", GetStreamObjectsCount());
		#endif
		#if defined LOD_ENABLED
		print("LOD support is enabled");
		#endif

		print(" "); // eos
		print("libraries and modules installed:");
		#if defined mystreamer_inc
		printf("mystreamer object streamer, max objects: %d", MAX_STREAM_OBJECTS);
		#endif
		#if defined myenter_inc
		printf("myenter entraces manager, max enters: %d", MAX_ENTRIES);
		#endif
		#if defined walk_inc
		print("SeifWalk walk styles");
		#endif
		#if defined progressbar_inc
		print("ProgressBar sa-style bar creation tool");
		#endif
		#if defined DOSH_inc
		print("Double-O-Ship ship ridabling");
		#endif
		#if defined mxini_inc
		print("mxINI buffered INI reader/writer");
		#elseif defined _dini_included
		print("Dini unbuffered INI reader/writer");
		#endif
		#if defined pawnthreads_inc
		print("PawnThreads thread manager");
		#elseif defined mythreads_inc
		print("mythreads thread manager");
		#endif
		#if defined myhooks_inc
		print("myhooks hook tool");
		#endif
		#if defined mymap_inc
		print("mymap ground height getter");
		#endif
		#if defined _antisleep_included
		print("AntiSleep by 009 anti-freeze plugin");
		#endif
		#if defined _extrcon_included
		print("ServerQuery query tool");
		#elseif defined myquery_dll_inc
		print("myquery info query tool");
		#endif
		#if defined _dns_included
		print("DNS by Incognito hostname resolve tool");
		#endif
		#if defined _GeoIP_Plugin_included
		print("GeoIP_Plugin country resolve tool");
		#elseif defined mygeoip_inc
		print("mygeoip country resolve tool");
		#endif
		return true;
	}
	else if(strcmd(tmp, "sys"))
	{
		mystrend(tmpcmd, cmd, idx);
		printf("returns: %d", mycommand(tmpcmd));
		return true;
	}
	#if G_DEBUG == true
	else if(strcmd(tmp, "ascii"))
	{
		mystrend(tmpcmd, cmd, idx);
		for(new i = 0, len = strlen(tmpcmd), temp = tmpcmd[0]; i < len; ++i, temp = tmpcmd[i])
		{
			printf("%c: %d: 0x%x", temp, temp, temp);
		}
		return true;
	}
	else if(strcmd(tmp, "mybenchmark"))
	{
		new stime = GetTickCount();
		#define TRIES 50000
		#define SLEN 10
		new str[50];
		print("LOOPS: "#TRIES);
		print("\nt1: random strings w/ fixed lenght "#SLEN);
		stime = GetTickCount();
		for(new i=0; i<TRIES; i++)
			mystricmp(randomstring(SLEN), randomstring(SLEN));
		printf("t1: mystrcmp: %d", GetTickCount()-stime);
		stime = GetTickCount();
		for(new i=0; i<TRIES; i++)
			mystricmp2(randomstring(SLEN), randomstring(SLEN));
		printf("t1: mystrcmp2: %d", GetTickCount()-stime);
		stime = GetTickCount();
		for(new i=0; i<TRIES; i++)
			strcmp(randomstring(SLEN), randomstring(SLEN), true);
		printf("t1: std::strcmp: %d", GetTickCount()-stime);

		print("\nt2: random strings w/ random lenght: util "#SLEN);
		stime = GetTickCount();
		for(new i=0; i<TRIES; i++)
			mystricmp(randomstring(random(SLEN)), randomstring(random(SLEN)));
		printf("t2: mystrcmp: %d", GetTickCount()-stime);
		stime = GetTickCount();
		for(new i=0; i<TRIES; i++)
			mystricmp2(randomstring(random(SLEN)), randomstring(random(SLEN)));
		printf("t2: mystrcmp2: %d", GetTickCount()-stime);
		stime = GetTickCount();
		for(new i=0; i<TRIES; i++)
			strcmp(randomstring(random(SLEN)), randomstring(random(SLEN)), true);
		printf("t2: std::strcmp: %d", GetTickCount()-stime);

		print("\nt3: equal strings w/ fixed lenght "#SLEN);
		stime = GetTickCount();
		for(new i=0; i<TRIES; i++)
		{
			str = randomstring(SLEN);
			mystricmp(str, str);
		}
		printf("t3: mystrcmp: %d", GetTickCount()-stime);
		stime = GetTickCount();
		for(new i=0; i<TRIES; i++)
		{
			str = randomstring(SLEN);
			mystricmp2(str, str);
		}
		printf("t3: mystrcmp2: %d", GetTickCount()-stime);
		stime = GetTickCount();
		for(new i=0; i<TRIES; i++)
		{
			str = randomstring(SLEN);
			strcmp(str, str, true);
		}
		printf("t3: std::strcmp: %d", GetTickCount()-stime);

		#undef TRIES
		#undef SLEN
		return true;
	}
	else if(strcmd(tmp, "beep"))
	{
		//new txt[128], aname[32];
		new frenq, time;
		CMD_TOKEN(tmp /*[32]*/);
		if(isnull(tmp)) return print(CMD_USAGE_MSG##" beep [frenq] [time]"),true;
		frenq = strval(tmp);
		CMD_TOKEN(tmp /*[32]*/);
		if(isnull(tmp)) return print(CMD_USAGE_MSG##" beep [frenq] [time]"),true;
		time = strval(tmp);
		mybeep(frenq, time);
		return true;
	}
	else if(strcmd(tmp, "mystrtok"))
	{
		new ww;
		mystrend(tmpcmd, cmd,idx);
		ww = strval(tmpcmd);
		mystrtok(tmp, "44 55 66 77", ww);
		printf("%s: %s", tmp, tmpcmd);
		//tmpcmd = strtok(cmd, idx);
		//printf("%d", mystrcmp(tmp, tmpcmd));
		return true;
	}
	else if(strcmd(tmp, "mystrcmp"))
	{
		CMD_TOKEN(tmp);
		CMD_TOKEN(tmpcmd);
		printf("%s %s : %d", tmp, tmpcmd, mystricmp(tmp, tmpcmd));
		return true;
	}
	else if(strcmd(tmp, "mytest"))
	{
		//tmp = strtok(cmd,idx);
		new startime = GetTickCount();

		for(new i=0; i<20000; i++)
		strcmp(randomstring(50), randomstring(10),true);
		printf("strcmp: %d s", (GetTickCount()-startime));
		startime = GetTickCount();
		//for(new i=0; i<20000; i++) strcmd(randomstring(i%20),randomstring(i%20));
		printf("mystrcmp: %d s\n", (GetTickCount()-startime));

		startime = GetTickCount();
		for(new i=0; i<20000; i++)
		tmp = strtok(randomstring(10), idx);
		printf("strtok: %d s", (GetTickCount()-startime));
		startime = GetTickCount();
		for(new i=0; i<20000; i++)
		mystrtok32(tmp, randomstring(10), idx);
		printf("mystrtok: %d s\n", (GetTickCount()-startime));

		startime = GetTickCount();
		for(new i=0; i<20000; i++)
		strlen(randomstring(50));
		printf("strlen: %d s", (GetTickCount()-startime));
		startime = GetTickCount();
		for(new i=0; i<20000; i++)
		//mystrlen(randomstring(50));
		printf("mystrlen: %d s", (GetTickCount()-startime));
		return true;
	}
	else if(strcmd(tmp, "randtest"))
	{
		#define TRIES 1910
		#define R_MAX 0xffff
		new randnums[2][TRIES];
		new loses[2] = {0, 0};
		for(new i=0; i<TRIES; i++) printf("random("#R_MAX") == %d, myrandom("#R_MAX") == %d",
			randnums[0][i] = random(R_MAX), randnums[1][i] = myrandom(R_MAX));
		for(new k=0; k<2; k++)
		for(new i = 0; i<TRIES; i++)
		{
				for(new j=0; j<TRIES; j++)
				{
						if(randnums[k][i] == randnums[k][j] && i!=j)
						{
							printf("two values[%d][%d][%d]: %d, loses: %d", k,i,j, randnums[k][j], loses[k]);
							loses[k]+=1;
						}
				}
		}
		printf("loses[0] == %d, loses[1] == %d", loses[0], loses[1]);
		return true;
		#undef TRIES
		#undef R_MAX
	}
	#endif
	return false;
	#undef CMD_TOKEN
}
